package com.cleaningcloud.erp.service;

import java.util.List;
import java.util.Map;
import java.util.Objects;

import com.cleaningcloud.erp.domain.ErpAccountsPayable;
import com.cleaningcloud.erp.domain.vo.ErpAccountsPayableVo;

/**
 * 应付账款Service接口
 * 
 * @author cleaningcloud
 * @date 2024-09-30
 */
public interface IErpAccountsPayableService 
{
    /**
     * 查询应付账款
     * 
     * @param payableId 应付账款主键
     * @return 应付账款
     */
    ErpAccountsPayable selectErpAccountsPayableByPayableId(Long payableId);

    /**
     * 查询应付账款列表
     * 
     * @param erpAccountsPayable 应付账款
     * @return 应付账款集合
     */
    List<ErpAccountsPayableVo> selectErpAccountsPayableList(ErpAccountsPayable erpAccountsPayable);

    /**
     * 新增应付账款
     * 
     * @param erpAccountsPayable 应付账款
     * @return 结果
     */
    int insertErpAccountsPayable(ErpAccountsPayable erpAccountsPayable);

    /**
     * 修改应付账款
     * 
     * @param erpAccountsPayable 应付账款
     * @return 结果
     */
    int updateErpAccountsPayable(ErpAccountsPayable erpAccountsPayable);

    /**
     * 批量删除应付账款
     * 
     * @param payableIds 需要删除的应付账款主键集合
     * @return 结果
     */
    int deleteErpAccountsPayableByPayableIds(Long[] payableIds);

    /**
     * 删除应付账款信息
     * 
     * @param payableId 应付账款主键
     * @return 结果
     */
    int deleteErpAccountsPayableByPayableId(Long payableId);


    /**
     * 应付账款付款
     * @param erpAccountsPayable
     * @return
     */
    int paymentErpAccountsPayable(ErpAccountsPayable erpAccountsPayable);


    /**
     * 应付账款顶部统计
     * @return
     */
    Map<String, Objects> statistics();
}
